/*
 * @Description:
 * @Author: chenju
 * @Date: 2022-12-09 16:32:16
 * @LastEditors: chenju
 * @LastEditTime: 2022-12-12 16:22:02
 */
import config from '@/config';
import { ElMessage } from 'element-plus';

// 是否正在刷新
let refreshing = false;
/**
 * 比较版本号 后端版本较高时会刷新页面
 * @param version 后端版本号
 */
export function comparisonVersion(version: number) {
  let refreshTime = window.localStorage.getItem('refreshTime') || 0;
  refreshTime = Number(refreshTime);
  // 校验规则 刷新一次 localstorage中的refreshTime加一 刷新过一次后 不再自动刷新 但仍提示信息
  if (!refreshing) {
    // 是否正在刷新，不是的话 继续
    if (refreshTime <= 0) {
      // 是否刷新过一次，没有的话 继续
      if (Number(version) > Number(config.version)) {
        // 版本号比较 后端版本大于前端版本
        refreshing = true;
        window.localStorage.setItem('refreshTime', String(++refreshTime));
        ElMessage.error('当前页面版本较低，将会在2秒后自动刷新！');
        setTimeout(() => {
          window.location.reload();
        }, 2000);
      }
    } else {
      if (Number(version) <= Number(config.version)) {
        // 版本号正确后 去掉刷新次数
        window.localStorage.removeItem('refreshTime');
      } else {
        // 版本号仍然不正确， 提示强制刷新或联系管理员；
        refreshing = true;
        ElMessage.error('当前页面版本较低，请使用Ctrl+F5刷新页面！');
        setTimeout(() => {
          refreshing = false;
        }, 5000);
      }
    }
  }
}

/**
 * 展示消息 做了节流
 * @param msg
 */
let showMessageFlag = false;
export const showMessage = (msg: string) => {
  console.log('showMessage', msg);
  if (showMessageFlag) return;
  console.log('showMessage show', msg);
  ElMessage.error(msg);
  showMessageFlag = true;
  setTimeout(() => {
    showMessageFlag = false;
  }, 200);
};
